var mcp = {
        _age: 25,
        //当访问mcp的age属性时调用此方法，即mcp.age会调用此方法
        get age() {
            console.log("get age() is call")
                //获取_age的值
            return this._age
        },
        //单设置 mcp的ages属性时会调用此方法，即 mcp.age = 25,并且25或作为实参传入n里面。
        set age(n) {
            console.log("set age() is call")
            if (isNaN(n)) {
                console.error("你输入的数据类型不对，请输入数字！")
            } else {
                if (n >= 150 || n <= 0) {
                    console.error(`输入的年龄${n}不对`)
                } else {
                    //更新_age的值
                    this._age = n
                }

            }
        },
        name: "毛从平",
    }
    //尝试修改mcp的age
    //设置mcp的age属性


var mcp1 = {
        _age: 25,
    }
    //定义对象单个的属性值，一次只能设置对象的一个属性，设置mcp1的name属性
    //接收三个参数，第一个是要设置的对象，第二个是要设置的属性，第三是配置选项
Object.defineProperty(mcp1, "name", {
    //是否可写
    writable: false,
    //是否可以删除
    configurable: false,
    //默认值
    value: "毛从平"
});
//定义对象单个的属性值，一次只能设置对象的一个属性，设置mcp1的age属性
Object.defineProperty(mcp1, "age", {
    //get，set含义同上，只是写法不一样
    get: function() {
        console.log("get funciton() is calling")
        return this._age;
    },
    set(n) {
        if (isNaN(n)) {
            console.error("你输入的数据类型不对，请输入数字！")
        } else {
            if (n >= 150 || n <= 0) {
                console.error(`输入的年龄${n}不对`)
            } else {
                this._age = n
            }

        }
    }
});
//尝试修改mcp1的name和age

var mcp3 = {
    address: "宜宾市"
};
//定义对象多个属性值，一次可以设置对象的多个属性
// Object.defineProperty
Object.defineProperties(mcp3, {
        //设置_age属性
        _age: {
            value: 20
        },
        //设置age属性
        age: {
            get: function() {
                console.log('get is call');
                return this._age
            },
            set: function(n) {
                //如果设置的值不是数字
                if (isNaN(n)) {
                    console.error("你输入的数据类型不对，请输入数字！")
                } else {
                    if (n >= 150 || n <= 0) {
                        console.error(`输入的年龄${n}不对`)
                    } else {
                        this._age = n
                    }
                }
            },

        },
        //设置name属性
        name: {
            //默认值
            value: "毛从平",
            //是否可以删除
            configurable: false,
            //是否可以修改
            writable: false,
            // 是否可以通过for-in迭代，默认为false
            enumerable: true
        }

    })
    //尝试修改mcp3的age和name
    //尝试用for-in迭代(循环)mcp3,然后在修改nam的enumerable，再重复上次迭代看效果。